<!DOCTYPE html>
<html>

	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>

	<body>
	</body>
	<script>
		//点击一个按钮时将额外的数据传入这个事件的回调函数
		var A = {
			event: {}
		}

		//事件绑定方法
		A.event.on = function(dom, type, fn) {
			// W3C标准事件绑定
			if(dom.addEventListener) {
				dom.addEventListener(type, fn, false);
				// ie事件绑定
			} else if(dom.attachEvent) {
				dom.attachEvent('on' + type, fn);
				// DOM0级事件绑定
			} else {
				dom['on' + type] = fn;
			}
		}

		//参与者模式：
		A.event.on = function(dom, type, fn, data) {
			// W3C标准事件绑定
			if(dom.addEventListener) {
				dom.addEventListener(type, function(e) {
					//在dom环境中调用fn,并传入事件对象与data数据参数
					fn.call(dom, e, data);
				}, false);
			}
			// IE事件绑定
			//......
		}
		
		//JavaScript中的al与apply方法很神奇，它可以使我们在特定作用域中执行某个函数，
		//并传入参数，所以，在回调函数中，我们借助call函数就能实现给函数传额外参数了

	</script>

</html>